#define DEBUG
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

typedef long long ll;

const int maxn=500000, mods=998244353, g=3;

namespace Math {
  ll fact[maxn+1], unfact[maxn+1];

  ll qpower(ll a, int n) {
    ll s=1;
    for (; n>1; n>>=1) {
      if (n&1) {
        s = s*a%mods;
      }
      a = a*a%mods;
    }
    return a*s%mods;
  }

  void initFact(int n) {
    fact[0] = 1;
    for (int i=1; i<=n; i++) {
      fact[i] = fact[i-1]*i%mods;
    }
    unfact[n] = qpower(fact[n], mods-2);
    for (int i=n; i>0; i--) {
      unfact[i-1] = unfact[i]*i%mods;
    }
  }

  ll C(int n, int m) {
    return fact[n]*unfact[m]%mods*unfact[n-m]%mods;
  }
}

namespace NTT {
  const int maxsize=262144;
  int tosize[maxn+1], next[maxsize+1], log[maxsize+1];

  void init(int n) {
    for (int i=0; (1<<i)<=maxsize; i++) {
      log[1<<i] = i;
    }
    tosize[1] = 1;
    for (int i=2; i<=n; i++) {
      tosize[i] = i>tosize[i-1] ? tosize[i-1]*2 : tosize[i-1];
    }
  }

  void initNext(int n) {
    for (int i=1; i<n; i++) {
      next[i] = (next[i>>1]>>1)|((i&1)<<(log[n]-1));
    }
  }

  ll calcW(int len) {
    return Math::qpower(g, (mods-1)/len);
  }

  void ntt(int size, ll a[], bool flag) {
    for (int i=0; i<size; i++) {
      if (next[i]>i) {
        ll t;
        t=a[i], a[i]=a[next[i]], a[next[i]]=t;
      }
    }

    for (int len=1; len<size; len<<=1) {
      ll t=calcW(len*2);
      t = flag ? Math::qpower(t, mods-2) : t;
      for (int i=0; i<size; i+=2*len) {
        ll w=1;
        for (int j=0; j<len; j++) {
          ll x=a[i+j], y=w*a[i+len+j]%mods;
          a[i+j] = (x+y)%mods;
          a[i+len+j] = (x+mods-y)%mods;
          w = w*t%mods;
        }
      }
    }
  }

  void mul(int an, int as, int at, ll a[], int bn, int bs, int bt, ll b[], int cs, int ct, ll c[]) {
    static ll ta[maxsize+1], tb[maxsize+1], tc[maxsize+1];
    int size=tosize[an+bn+2];
    memset(ta, 0, sizeof(ll)*size);
    memset(tb, 0, sizeof(ll)*size);
    for (int i=as; i<=as+an; i++) {
      ta[i-as] = a[i%at];
    }
    for (int i=bs; i<=bs+bn; i++) {
      tb[i-bs] = b[i%bt];
    }

    initNext(size);
    ntt(size, ta, false);
    ntt(size, tb, false);
    for (int i=0; i<size; i++) {
      tc[i] = ta[i]*tb[i]%mods;
    }
    ntt(size, tc, true);
    int unsize=Math::qpower(size, mods-2);
    for (int i=cs; i<=cs+an+bn; i++) {
      c[i%ct] = tc[i-cs]*unsize%mods;
    }
  }
}

int main() {
  freopen("path.in", "r", stdin);
  freopen("path.out", "w", stdout);

  static ll a[maxn+1], b[maxn+1], f[2][4*maxn+1];
  int n;
  scanf("%d", &n);
  Math::initFact(n);
  NTT::init(n);

  for (int i=1; i<n; i++) {
    int u, v;
    scanf("%d %d", &u, &v);
    b[u]++, b[v]++;
  }
  sort(b+1, b+n+1);

  a[0]=1;
  for (int i=1; i<=n; i++) {
    a[i] = a[i-1]*(2*i-1)%mods;
  }

  static int q[2][4*maxn+1][2], h[2], t[2], tf[2];
  for (int i=1; i<=n; i++) {
    q[0][i][1] = b[i]/2;
    q[0][i][0] = tf[0]+1;
    for (int j=0; j<=b[i]/2; j++) {
      f[0][tf[0]+1+j] = Math::C(b[i], 2*j)*a[j]%mods;
    }
    tf[0] += b[i]/2+1;
  }
  h[0]=1, t[0]=n, h[1]=1, t[1]=0;
  for (; h[0]<=t[0] || h[1]<=t[1]; ) {
    int as, an, bs=-1, bn;
    ll *af, *bf;
    if (h[0]<=t[0] && (h[1]>t[1] || q[0][h[0]][1]<=q[1][h[1]][1])) {
      as = q[0][h[0]][0];
      an = q[0][h[0]][1];
      af = f[0];
      h[0]++;
    } else if (h[1]<=t[1]) {
      as = q[1][h[1]][0];
      an = q[1][h[1]][1];
      af = f[1];
      h[1]++;
    }
    if (h[0]<=t[0] && (h[1]>t[1] || q[0][h[0]][1]<=q[1][h[1]][1])) {
      bs = q[0][h[0]][0];
      bn = q[0][h[0]][1];
      bf = f[0];
      h[0]++;
    } else if (h[1]<=t[1]) {
      bs = q[1][h[1]][0];
      bn = q[1][h[1]][1];
      bf = f[1];
      h[1]++;
    }

    if (bs>=0) {
      NTT::mul(an, as, 4*maxn, af, bn, bs, 4*maxn, bf, (tf[1]+1)%(4*maxn), 4*maxn, f[1]);
      q[1][++t[1]][0] = (tf[1]+1)%(4*maxn);
      q[1][t[1]][1] = an+bn;
      tf[1] = (tf[1]+1+an+bn)%(4*maxn);
    } else {
      break;
    }
  }

  for (int i=1; i<n; i++) {
    printf("%lld ", f[1][(q[1][t[1]][0]+n-i-1)%(4*maxn)]);
  }

  fclose(stdin);
  fclose(stdout);
  return 0;
}
